/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.caelum.goodbuy.dao;

import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.ioc.Component;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Ramon Moraes
 */
@Component
public class ProdutoDao {
    
    private final Session session;
    
    public ProdutoDao(Session session){
        this.session = session;
    }
    
    public void salva(Produto produto) throws HibernateException {
        Transaction tx = session.beginTransaction();
        session.save(produto);
        tx.commit();
    }
    
    public List<Produto> listaTudo(){
        return this.session.createCriteria(Produto.class).list();
    }
    
    public Produto carrega(Long id){
        return (Produto) this.session.load(Produto.class, id);
    }
    
    public void atualiza(Produto produto){
        Transaction tx = session.beginTransaction();
        this.session.update(produto);
        tx.commit();
    }
    
    public void remove(Produto produto){
        Transaction tx = session.beginTransaction();
        this.session.delete(produto);
        tx.commit();
    }
}
